Propiedad y permisos

¿Porqué obtener una certificación LPI?
LPI ofrece credenciales que son reconocidas a lo ancho de toda la industria como un medio de validar habilidades a través de todas las distribuciones de Linux; para proporcionarte conocimiento básico y el más amplio rango de oportunidades de trabajo.
Linux Essentials es un primer gran paso en acelerar tu carrera tecnológica.
Propiedad y Permisos
Introducción
La propiedad de archivo es fundamental para la seguridad en sistemas Linux. Cada archivo tiene un propietario de usuario y un propietario de grupo. Los permisos determinan quién puede leer, escribir o ejecutar el archivo. Este capítulo aborda cómo especificar los propietarios de usuario y grupo de un archivo, y cómo gestionar los permisos de archivos y directorios, incluyendo la modificación de permisos.
Propiedad de Archivo
Los Comandos newgrp y groups
El comando newgrp
permite al usuario cambiar temporalmente su grupo de trabajo, sin necesidad de cerrar sesión. Esto es útil cuando se necesita ejecutar comandos o crear archivos bajo un grupo diferente al grupo primario del usuario. Por otro lado, el comando groups
muestra todos los grupos a los que pertenece el usuario actual, lo que es útil para verificar permisos y asociaciones de grupo.
Ejemplo de uso de newgrp
:
# Cambia el grupo actual a 'developers'
newgrp developers
Ejemplo de uso de groups
:
# Muestra los grupos del usuario actual
groups
Los Comandos chgrp y stat
El comando chgrp
cambia el grupo propietario de un archivo o directorio, útil para ajustar permisos de acceso en un entorno colaborativo. El comando stat
proporciona información detallada sobre un archivo, incluyendo su tamaño, tiempos de modificación, y propiedad y permisos.
Ejemplo de uso de chgrp
:
# Cambia el grupo propietario del archivo 'document.txt' a 'developers'
chgrp developers document.txt
Ejemplo de uso de stat
:
# Muestra información detallada del archivo 'document.txt'
stat document.txt
Comando chown
El comando chown
cambia la propiedad de un archivo o directorio, permitiendo modificar tanto el usuario propietario como el grupo propietario. Es crucial para administrar correctamente el acceso y la responsabilidad sobre los archivos.
Ejemplo de uso de chown
:
# Cambia el usuario propietario a 'john' y el grupo propietario a 'developers' del archivo 'document.txt'
chown john:developers document.txt
Permisos
Comprendiendo los Permisos
Los permisos de archivo se dividen en tres categorías: lectura (r), escritura (w) y ejecución (x). Estos permisos se aplican a tres clases de usuarios: el propietario del archivo (u), el grupo propietario (g) y otros usuarios (o).
- Lectura (r): Permite ver el contenido del archivo.
- Escritura (w): Permite modificar el contenido del archivo.
- Ejecución (x): Permite ejecutar el archivo si es un script o programa.
Ejemplo de permisos:
# Permisos rwxr-xr--
# Usuario propietario: rwx (lectura, escritura, ejecución)
# Grupo propietario: r-x (lectura, ejecución)
# Otros usuarios: r-- (lectura)
Escenario #1 - La importancia del Acceso al Directorio
El acceso a un directorio requiere permisos de ejecución. Sin estos permisos, no se puede acceder al contenido del directorio, incluso si se tienen permisos de lectura en los archivos dentro del directorio.
Ejemplo:
# Añade permiso de ejecución para el usuario propietario en el directorio 'mydir'
chmod u+x mydir
Donde
chmod
es el comando para cambiar permisos.u
es el usuario propietario.+x
añade permiso de ejecución.mydir
es el directorio al que se le añade el permiso.
Escenario #2 - Visualizar el Contenido del Directorio
Para visualizar el contenido de un directorio, se necesitan permisos de lectura en el directorio. Esto permite listar los archivos y subdirectorios contenidos.
Ejemplo:
# Añade permiso de lectura para todos los usuarios en el directorio 'mydir'
chmod a+r mydir
Donde
a
es todos los usuarios.+r
añade permiso de lectura.mydir
es el directorio al que se le añade el permiso.
Escenario #3 - Eliminar el Contenido del Directorio
Para eliminar archivos dentro de un directorio, se necesitan permisos de escritura en el directorio, además de los permisos necesarios en los propios archivos.
Ejemplo:
# Añade permiso de escritura para el grupo propietario en el directorio 'mydir'
chmod g+w mydir
Donde
g
es el grupo propietario.+w
añade permiso de escritura.
Escenario #4 - Acceso a los Contenidos de un Directorio
El acceso a los contenidos de un directorio requiere permisos de lectura y ejecución. La lectura permite ver los nombres de los archivos y la ejecución permite acceder a ellos.
Ejemplo:
# Añade permisos de lectura y ejecución para el usuario propietario en el directorio 'mydir'
chmod u+rx mydir
Donde
u
es el usuario propietario.+rx
añade permisos de lectura y ejecución.
Escenario #5 - La Complejidad de los Usuarios y Grupos
La gestión de permisos se complica con múltiples usuarios y grupos. Establecer correctamente los permisos es crucial para evitar problemas de acceso. Los permisos deben ser configurados considerando las necesidades de acceso de diferentes usuarios y grupos.
Ejemplo:
# Cambia la propiedad del archivo 'project.txt' a 'alice' y su grupo a 'team'
chown alice:team project.txt
Donde
alice
es el nuevo usuario propietario.team
es el nuevo grupo propietario.project.txt
es el archivo al que se le cambia la propiedad.
Escenario #6 - Prioridad de Permiso
Los permisos se aplican en el siguiente orden de prioridad:
Si un usuario es el propietario del archivo, los permisos para el usuario propietario son los que se aplican, independientemente de los permisos para el grupo o los otros usuarios.
Usando el Comando chmod
Método Simbólico
El método simbólico usa letras para representar los permisos que se desean cambiar. Por ejemplo, u+r
añade permiso de lectura al usuario propietario, mientras que g-w
quita el permiso de escritura al grupo propietario.
Ejemplo:
# Añade permisos de lectura, escritura y ejecución para el usuario propietario, y permisos de lectura y ejecución para el grupo propietario
chmod u+rwx,g+rx filename
Donde
u
es el usuario propietario.+rwx
añade permisos de lectura, escritura y ejecución.- ',' separa los permisos para diferentes clases de usuarios.
g
es el grupo propietario.+rx
añade permisos de lectura y ejecución.
Método Numérico
El método numérico usa números para representar los permisos. Cada tipo de permiso tiene un valor numérico:
Estos valores se suman para definir los permisos.
Ejemplo:
# Establece permisos 755 (rwxr-xr-x) para el archivo 'filename'
chmod 755 filename
Detalles de permisos numéricos:
7
(rwx) = lectura (4) + escritura (2) + ejecución (1)5
(r-x) = lectura (4) + ejecución (1)0
(---) = sin permisos
Revisión del Comando stat
El comando stat
muestra información detallada sobre un archivo, incluyendo su tamaño, tiempos de modificación y permisos. Esto es útil para auditar y verificar la configuración de un archivo.
Ejemplo:
# Muestra información detallada del archivo 'document.txt'
stat document.txt
Salida típica del comando stat
:
File: 'document.txt'
Size: 1024 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 123456 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ user) Gid: ( 1000/ user)
Access: 2024-08-01 12:34:56.000000000 +0000
Modify: 2024-08-01 12:34:56.000000000 +0000
Change: 2024-08-01 12:34:56.000000000 +0000
Birth: -
umask
El comando umask es una característica que se utiliza para determinar los permisos predeterminados establecidos al crear un archivo o directorio. Los permisos predeterminados se determinan cuando el valor de umask se resta de los permisos máximos predeterminados permisibles. Los permisos máximos por defecto son diferentes para los archivos y para los directorios:
archivo | rw-rw-rw- |
---|---|
directorio | rwxrwxrwx |
Los permisos que se establecen inicialmente en un archivo cuando se crea no pueden exceder rw-rw-rw-
. Para tener el permiso de ejecución para un archivo, primero tienes que crear el archivo y luego cambiar los permisos.
El comando umask se puede utilizar para mostrar el valor umask actual:
sysadmin@localhost:~$ umask
0002
Desglose de la salida:
- El primer
0
indica que umask se da como un número octal. - El segundo
0
indica qué permisos hay que restar de los permisos por defecto de usuario propietario. - El tercer
0
indica qué permisos hay que restar de los permisos por defecto del grupo propietario. - El último número
2
indica qué permisos hay que restar de los permisos por defecto de otros.
Ten en cuenta que los diferentes usuarios pueden tener diferentes umasks. Normalmente, el usuario root tendrá una unmask más restrictiva que las cuentas de usuario:
root@localhost:~# umask
0022
Cómo Funciona umask
Para entender cómo funciona umask, supongamos que umask se establece en 027
y consideremos lo siguiente:
File Default (valor predeterminado) | 667 |
---|---|
Umask | -027 |
Resultado | 640 |
La umask 027
significa que, por defecto los archivos nuevos recibirían los permisos 640
o rw-r-----
tal como se demuestra a continuación:
sysadmin@localhost:~$ umask 027
sysadmin@localhost:~$ touch sample
sysadmin@localhost:~$ ls -l sample
-rw-r-----. 1 sysadmin sysadmin 0 Oct 28 20:14 sample
Debido a que los permisos predeterminados para los directorios son diferentes que para los archivos, una umask 027 daría lugar a diferentes permisos iniciales sobre los nuevos directorios:
File Default (valor predeterminado) | 777 |
---|---|
Umask | -027 |
Resultado | 750 |
La umask 027
significa que, por defecto los directorios nuevos recibirían los permisos 750
o rwxr-x-----
tal como se demuestra a continuación:
sysadmin@localhost:~$ umask 027
sysadmin@localhost:~$ mkdir test-dir
sysadmin@localhost:~$ ls -ld test-dir
drwxr-x---. 1 sysadmin sysadmin 4096 Oct 28 20:25 test-dir
La nueva umask sólo se aplicará a un archivo y los directorios creados durante esa sesión. Cuando arranque un nuevo shell, la umask por defecto será efectiva de nuevo.
Cambiar permanentemente la umask requiere la modificación del archivo .bashrc
que se encuentra en el directorio home
del usuario.